package com.sc.nft.service;

import com.sc.nft.dto.MarketValueManagementDaoDTO;
import com.sc.nft.entity.*;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

public interface UserEcologyHatchIncomeService {

    /**
     * 熔炼周期奖励
     */
    void settleHatch();

    /**
     * 结算周期奖励
     */
    void settlePeriodicReward(Date startTime, Date endTime);


    /**
     * 结算直推收益(新)
     *
     * @param newEcologyHatchShareProfit
     */
    void newSettleDirectThrustIncomeList(UserEcologyHatchRecords userEcologyHatchRecords, List<NewEcologyHatchShareProfit> newEcologyHatchShareProfits);

    /**
     * 结算直推收益
     *
     * @param userEcologyHatchRecords
     * @param incomeConf
     */
    void settleDirectThrustIncomeList(UserEcologyHatchRecords userEcologyHatchRecords, EcologyHatchCollecionShareProfitConf incomeConf);

    /**
     * 生态节点持仓奖
     */
    void ecologyNodeTakePsitionIncome();

    /**
     * DAO-持仓奖
     *
     * @param ecologyHatchDaoIncomeConf
     */
    void daoPositionBonusAward(EcologyHatchDaoIncomeConf ecologyHatchDaoIncomeConf);

    /**
     * 生态培育奖
     */
    void ecologyCultivateIncome();

    /**
     * DAO生态培育奖
     */
    void daoEcologyCultivateIncome(EcologyHatchDaoIncomeConf ecologyHatchDaoIncomeConf);

    /**
     * 生态贡献奖
     */
    void ecologyContributionIncome();

    /**
     * DAO生态贡献奖
     */
    void daoEcologyContributionIncome(EcologyHatchDaoIncomeConf ecologyHatchDaoIncomeConf);

    /**
     * DAO生态培育奖  积分
     * @param ecologyHatchDaoIncomeConf
     */
    void daoEcologyCultivateIncomePoints(EcologyHatchDaoIncomeConf ecologyHatchDaoIncomeConf);

    /**|
     * 回流dao分红池
     * @param ecologyHatchDaoIncomeConf
     */
    void backFlowDaoPoints(EcologyHatchDaoIncomeConf ecologyHatchDaoIncomeConf);

    /**
     * DAO-持仓奖 积分
     * @param ecologyHatchDaoIncomeConf
     */
    void daoPositionBonusAwardPoints(EcologyHatchDaoIncomeConf ecologyHatchDaoIncomeConf);

    /**
     * DAO生态贡献奖  积分
     * @param ecologyHatchDaoIncomeConf
     */
    void daoEcologyContributionIncomePoints(EcologyHatchDaoIncomeConf ecologyHatchDaoIncomeConf);

    /**
     * 社区网点培育奖
     */
    void communityNetworkEcologicalCultivationAward();

    /**
     * 城市服务中心生态培育
     */
    void ecologicalCultivationOfUrbanServiceCenter();

    /**
     * 城市服务中心生态贡献
     */
    void urbanServiceCenterEcologicalContribution();

    /**
     * 双方分账释放
     *
     * @param ecologyHatchShareProfit
     */
    void ecologyDaoRelease(EcologyHatchShareProfit ecologyHatchShareProfit);

    /**
     * 分红池流入
     */
    void ecologyBonusPoolFlowInto(Long daoId);

    /**
     * 每日统计分成比例
     */
    void ecologyStatisticalProportion(EcologyHatchCollecionShareProfitConf ecologyHatchCollecionShareProfitConf);

    /**
     * 结算市值
     *
     * @param marketManagementDaoPool
     */
    void ecologyReleaseMarketValueManagement(MarketManagementDaoPool marketManagementDaoPool);

    /**
     * 解冻生态分润记录
     */
    void managementThaw();

    /**
     * 生态节点-持仓奖
     */
    void ecologyNodeTakePositionIncome();

    /**
     * 生态节点培育奖-城主培育奖
     */
    void ecologyCultivateIncomeNew();


    /**
     * 每份分账流入分账池
     */
    void disposeShareProfitDaoPool();

    /**
     * 分账池流入钱包
     */
    void theDividingPoolFlowsIntoTheWallet();

    /**
     * 生态节点贡献奖-城主贡献奖
     */
    void ecologyContributionIncomeNew();

    /**
     * 社区网点生态贡献奖
     * 1: 7天内(不包含当天的前7天)
     * 2: 365天内(不包含当天的前365天)
     */
    void communityNetworkEcologicalCultivationAwardNew();

    /**
     * 城市服务中心生态贡献奖
     */
    void urbanServiceCenterEcologicalContributionNew();

    /**
     * 城市服务中心培育奖发放
     */
    void ecologicalCultivationOfUrbanServiceCenterNew();

}
